Original author(s) | James Gosling, Sun Microsystems |
---|---|
Developer(s) | Oracle Corporation |
Initial release | January 23, 1996[1][2] |
Stable release | 23.0.1 (October 15, 2024[3]) [±] 21.0.5 LTS (October 15, 2024[4]) [±] |
Written in | Java, C++, C, assembly language[8] |
Operating system | Microsoft Windows, Linux, macOS,[9] and for old versions: Solaris |
Platform | x64, ARMv8, and for old versions: ARMv7, IA-32, SPARC (up to Java 14) (Java 8 includes 32-bit support for Windows – while no longer supported freely by Oracle for commercial use)[9] |
Available in | English, Chinese, French, German, Italian, Japanese, Korean, Portuguese, Spanish, Swedish[10] |
Type | Software platform |
License | Dual-license: GNU General Public License version 2 with classpath exception,[11] and a proprietary license.[12] |
Website |
Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.
Writing in the Java programming language is the primary way to produce code that will be deployed as byte code in a Java virtual machine (JVM); byte code compilers are also available for other languages, including Ada, JavaScript, Kotlin (Google's preferred Android language), Python, and Ruby. In addition, several languages have been designed to run natively on the JVM, including Clojure, Groovy, and Scala. Java syntax borrows heavily from C and C++, but object-oriented features are modeled after Smalltalk and Objective-C.[13] Java eschews certain low-level constructs such as pointers and has a very simple memory model where objects are allocated on the heap (while some implementations e.g. all currently supported by Oracle, may use escape analysis optimization to allocate on the stack instead) and all variables of object types are references. Memory management is handled through integrated automatic garbage collection performed by the JVM.